#include "../include/structure.h"

int sendFile(int net_fd){

    char *file_name = "1.txt";

    // 打开文件
    int file_fd = open(file_name, O_RDWR);  
    struct stat st;
    memset(&st, 0, sizeof st);
    fstat(file_fd, &st);

    send(net_fd, &st.st_size, sizeof(off_t), MSG_NOSIGNAL);

    // 写给客户端文件名字
    int name_len = strlen(file_name);
    // 先传文件名大小再传文件名
    // 别bb信号，免得我崩溃了😩
    send(net_fd, &name_len, sizeof(int), MSG_NOSIGNAL);
    send(net_fd, file_name, name_len, MSG_NOSIGNAL);

    // mmap 版本
    // void *p = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, file_fd, 0);
    // send(net_fd, p, st.st_size, MSG_NOSIGNAL);
    // munmap(p, st.st_size); 

    // sendfile版本
    // 绕过缓冲区直接发到网卡
    sendfile(net_fd, file_fd, 0, st.st_size);

    
    close(file_fd);
    return 0;
}
